package com.kfm.bootdemo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @Controller 标识为一个handler
 *      表示其内部的方法可以接收请求 处理请求返回响应等等
 *      这个类应该 和启动类同包或者子包里面
 */
@Controller
public class HelloController {

    /**
     * @RequestMapping 表示一个映射
     *  当请求为 /index 时，该方法执行 此时该方法相当于一个 servlet
     * @return
     */
    @RequestMapping({"/index", "/"})
    public void index(HttpServletRequest request, HttpServletResponse response) {
        System.out.println("index执行");
        response.setContentType("text/html;charset=utf-8");
        try {
            response.getWriter().write("我是SpringBoot服务");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // /test?uname=zs&uage=1
    // @RequestParam("请求参数里面的key") 形参变量名 将请求参数里面的key的值和方法形参变量名一一对应
//    @RequestMapping("/test")
    public void test(HttpServletRequest request, HttpServletResponse response, @RequestParam("uname") String name, @RequestParam("uage") int age) {
//        String name = request.getParameter("name");
        System.out.println(name);
        System.out.println(age);
        response.setContentType("text/html;charset=utf-8");
        try {
            response.getWriter().write("hello test");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//    @RequestMapping("/login")
    public String login() {
        // thymeleaf 会去 resources 目录下的 templates 找 返回值.html
        return "login";
    }

    // 当前的方法只能处理 /hello 的get请求
    // @RequestMapping 没有method属性 任何类型的请求都可以处理
    // @GetMapping  @PostMapping
    // @RequestMapping(value = "/login", method = RequestMethod.GET)
//    @GetMapping("/login")
//    public void hello(HttpServletRequest request, HttpServletResponse response) {
//        try {
//            response.setContentType("text/html;charset=utf-8");
//            response.getWriter().write("我是hello的get请求");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }

    // 当前的方法处理的是 /login 的post请求
    // @RequestMapping(value = "/login", method = RequestMethod.POST)
//    @PostMapping("/login")
    public void login(HttpServletResponse response) {
        try {
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("login success");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
